import * as api from '#/api/core/class.ts'

/* ===== 内部缓存 ===== */
const catMap = new Map<string, string>()
let loading: Promise<void> | null = null

/* 保证只拉一次分类并填充 Map */
async function ensureCategories(type = 7): Promise<void> {
  if (catMap.size) return                 // 已缓存直接过
  if (!loading) {                        // 防止并发重复请求
    loading = api.$getalllist({ type }).then(list => {
      list.forEach(i => catMap.set(i.value, i.label))
    })
  }
  await loading
}

/* ===== 你要的工具：给任意列表注入 catename ===== */
export async function mapCatename<T extends { categories?: { categoryId: string }[] }>(
  list: T[],
  type = 7
): Promise<T[]> {
  await ensureCategories(type)                       // 1. 异步只跑一次
  return list.map(item => ({
    ...item,
    catename: catMap.get(item.categories?.[0]?.categoryId ?? '') ?? ''
  }))
}


// 用户没有单个分类的查询
export async function onemapCatename<T extends { categories?: { categoryId: string }[] }>(
  list: T[],
  type = 7
): Promise<T[]> {
  await ensureCategories(type)
  console.log('list1111111', list);
  // 1. 异步只跑一次
  return list.map(item => ({
    ...item,
    catename: catMap.get(item?.categoryId ?? '') ?? ''
  }))
}

